const path = require('path')
const HtmlPlugin = require('html-webpack-plugin')
const { VueLoaderPlugin } = require('vue-loader')

module.exports = {
  // 模式
  // mode: 'production',
  mode: 'development',
  // 入口
  entry: {
    xxx: './src/main.js'
  },
  // 出口
  output: {
    path: path.resolve('dist'),  // 打包文件的根目录的绝对路径
    filename: 'js/[name]_[contenthash:8].js', // xxx_8位的hash值.js
    clean: true, // 自动删除dist下的所有文件
  },
  // 模块加载器
  module: {
    rules: [
      // css
      {
        test: /\.css$/,
        use: [
          "vue-style-loader", // js中的css => 页面中的<style>
          "css-loader"  // css => js
        ],
      },
      // less
      {
        test: /\.less$/,
        use: [
          'vue-style-loader', // js => style
          'css-loader', // css => js
          'less-loader', // less => css
        ],
      },
      // es6 => es5
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      },
      // vue
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
    ]
  },
  // 插件
  plugins: [
    new HtmlPlugin({
      template: './public/index.html'
    }),
    // 处理vue
    new VueLoaderPlugin()
  ],

  // 开发服务器
  devServer: {
    open: true, // 自动打开浏览器访问
    port: 8008, // 端口号
  }
}